#include "definicoes.h"

extern void ler_string(char *field, FILE *fp);

//Declarações especies.c
void insereE(char *filename);
void add_indiceE(int id, long seek);

void add_indiceE(int id, long seek){
  indice * aux, * link;
  for(aux = indice_espec; (aux->prox != NULL && aux->prox->indice < id); aux = aux->prox); /*Percorre o indice ate que o novo no seja colocado apos o no atual*/
  link = aux->prox;
  aux->prox = (indice *) malloc (sizeof(indice));
  aux = aux->prox;
  aux->indice = id;
  aux->offset = seek;
  aux->prox = link;
}

void insereE(char *filename){  /*insere o registro no fim do arquivo*/
  FILE *fr, *fw;
  especie esp;
  int i;
  long seek;
  if(!(fw = fopen("especies.txt", "w+"))){
    printf ("Arquivo nao encontrado!\n"); 
    return;
  }
  if ((fr = fopen( filename , "r" )) == NULL){
    printf("Erro ao abrir o arquivo!");
    return;
  }
  fscanf(fr, "%d\n", &num_esp);
  for(i=0; i<num_esp; i++){
    seek = ftell(fw);
    fscanf(fr, "%d|", &(esp.id));
    ler_string(esp.nomeC, fr);
    ler_string(esp.nomeP, fr);
    ler_string(esp.caminho, fr);
    fscanf(fr, "%d|", &(esp.data));
    ler_string(esp.desc, fr);
    fprintf(fw,"%d # %s # %d # %s # %s # %s\n", esp.id, esp.caminho, esp.data, esp.nomeC, esp.nomeP, esp.desc);
    add_indiceE(esp.id, seek);
  }
  fclose(fr);  
  fclose(fw);
  return;
}
